(function(m) {
  m(CodeMirror);
})(function(m) {
  m.defineMode("awsformevent", function(t, o) {
    o.client, o.atoms, o.builtin, o.formeventKeywords;
    var v = o.jsonld || !0;
    o.operatorChars;
    var h = o.support || {};
    o.hooks, o.backslashStringEscapes;
    var g = o.brackets || /^[\{}\(\)\[\]]/, k = o.punctuation || /^[;,:]/, w = o.functionkeys || {}, b = o.highlightkeys || {}, p = o.datafunkeys || {}, x = o.propertieskeys || {}, l = o.wordCharacters || /[\w$\xa1-\uffff]/, u = /[+\-*&%=<>!?|~^@]/, d = /^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/, c = function() {
      function e(E) {
        return { type: E, style: "keyword" };
      }
      var n = e("keyword a"), i = e("keyword b"), a = e("keyword c"), s = e("keyword d"), S = e("operator"), y = { type: "atom", style: "atom" };
      return {
        if: e("if"),
        while: n,
        with: n,
        else: i,
        do: i,
        try: i,
        finally: i,
        return: s,
        break: s,
        continue: s,
        new: e("new"),
        delete: a,
        void: a,
        throw: a,
        debugger: e("debugger"),
        var: e("var"),
        const: e("var"),
        let: e("var"),
        function: e("function"),
        catch: e("catch"),
        for: e("for"),
        switch: e("switch"),
        case: e("case"),
        default: e("default"),
        in: S,
        typeof: S,
        instanceof: S,
        true: y,
        false: y,
        null: y,
        undefined: y,
        NaN: y,
        Infinity: y,
        this: e("this"),
        class: e("class"),
        super: e("atom"),
        yield: a,
        export: e("export"),
        import: e("import"),
        extends: a,
        await: a
      };
    }();
    function r(e, n, i) {
      return n;
    }
    function f(e, n) {
      var i = e.next();
      if (g.test(i))
        return e.eatWhile(g), n.tokenBaseArr || (n.tokenBaseArr = []), n.tokenBaseArr.push("bracket"), "bracket";
      if (k.test(i))
        return e.eatWhile(k), n.tokenBaseArr || (n.tokenBaseArr = []), n.tokenBaseArr.push(i), "punctuation";
      if (/\./.test(i))
        return e.eatWhile(k), n.tokenBaseArr || (n.tokenBaseArr = []), n.tokenBaseArr.push(i), "dot";
      if (i == '"' || i == "'")
        return n.tokenize = A(i), n.tokenBaseArr || (n.tokenBaseArr = []), n.tokenBaseArr.push(i), n.tokenize(e, n);
      if (i == "." && e.match(/^\d[\d_]*(?:[eE][+\-]?[\d_]+)?/))
        return n.lastType = "number", r("number", "number");
      if (i == "." && e.match(".."))
        return n.lastType = "spread", r("spread", "meta");
      if (/[\[\]{}\(\),;\:\.]/.test(i))
        return n.lastType = i, r();
      if (i == "=" && e.eat(">"))
        return n.lastType = "=>", r("=>", "operator");
      if (i == "0" && e.match(/^(?:x[\dA-Fa-f_]+|o[0-7_]+|b[01_]+)n?/))
        return n.lastType = "number", r("number", "number");
      if (/\d/.test(i))
        return e.match(/^[\d_]*(?:n|(?:\.[\d_]*)?(?:[eE][+\-]?[\d_]+)?)?/), n.lastType = "number", r("number", "number");
      if (i == "/")
        return e.eat("*") ? (n.tokenize = B, B(e, n)) : e.eat("/") ? (e.skipToEnd(), r("comment", "comment")) : I(e, n, 1) ? (T(e), e.match(/^\b(([gimyus])(?![gimyus]*\2))+\b/), n.lastType = "regexp", r("regexp", "string-2")) : (e.eat("="), n.lastType = "operator", r("operator", "operator", e.current()));
      if (i == "`")
        return n.tokenize = D, D(e, n);
      if (i == "#" && e.peek() == "!")
        return e.skipToEnd(), n.lastType = "meta", r("meta", "meta");
      if (i == "#" && e.eatWhile(l))
        return n.lastType = "variable", r("variable", "property");
      if (i == "<" && e.match("!--") || i == "-" && e.match("->") && !/\S/.test(e.string.slice(0, e.start)))
        return e.skipToEnd(), n.lastType = "comment", r("comment", "comment");
      if (u.test(i))
        return (i != ">" || !n.lexical || n.lexical.type != ">") && (e.eat("=") ? (i == "!" || i == "=") && e.eat("=") : /[<>*+\-|&?]/.test(i) && (e.eat(i), i == ">" && e.eat(i))), i == "?" && e.eat(".") ? r() : (n.lastType = "operator", r("operator", "operator", e.current()));
      e.eatWhile(/^_|\w|\d|[\u4e00-\u9fa5]/);
      var a = e.current();
      if (n.tokenBaseArr || (n.tokenBaseArr = []), n.tokenBaseArr.push(a), t.formEventExpressKeywords) {
        if (t.formEventExpressKeywords.bokeys.indexOf(a) > -1)
          return "boparam";
        if (t.formEventExpressKeywords.boitemkeys.indexOf(a) > -1)
          return "boitemparam";
        if (t.formEventExpressKeywords.componentkeys.indexOf(a) > -1)
          return "componentparam";
      }
      if (p.hasOwnProperty(a))
        return "datafunparam";
      if (x.hasOwnProperty(a))
        return "propertiesparam";
      if (w.hasOwnProperty(a))
        return "functionparam";
      if (b.hasOwnProperty(a))
        return "highlightparam";
      if (n.lastType != ".") {
        if (c.propertyIsEnumerable(a)) {
          var s = c[a];
          return n.lastType = s.type, r(s.type, s.style);
        }
        if (a == "async" && e.match(/^(\s|\/\*([^*]|\*(?!\/))*?\*\/)*[\[\(\w]/, !1))
          return n.lastType = "async", r("async", "keyword");
      }
      return n.lastType = "variable", r("variable", "variable");
    }
    function D(e, n) {
      for (var i = !1, a; (a = e.next()) != null; ) {
        if (!i && (a == "`" || a == "$" && e.eat("{"))) {
          n.tokenize = f;
          break;
        }
        i = !i && a == "\\";
      }
      return n.lastType = "quasi", r("quasi", "string-2", e.current());
    }
    function A(e) {
      return function(n, i) {
        var a = !1, s;
        if (v && n.peek() == "@" && n.match(d))
          return i.tokenize = f, i.lastType = "jsonld-keyword", r("jsonld-keyword", "meta");
        for (; (s = n.next()) != null && !(s == e && !a); )
          a = !a && s == "\\";
        return a || (i.tokenize = f), i.lastType = "string", r("string", "string");
      };
    }
    function I(e, n, i) {
      return n.tokenize == f && /^(?:operator|sof|keyword [bcd]|case|new|export|default|spread|[\[{}\(,;:]|=>)$/.test(n.lastType) || n.lastType == "quasi" && /\{\s*$/.test(e.string.slice(0, e.pos - (i || 0)));
    }
    function T(e) {
      for (var n = !1, i, a = !1; (i = e.next()) != null; ) {
        if (!n) {
          if (i == "/" && !a)
            return;
          i == "[" ? a = !0 : a && i == "]" && (a = !1);
        }
        n = !n && i == "\\";
      }
    }
    function B(e, n) {
      let i = !1, a = e.next();
      for (; a; ) {
        if (a == "/" && i) {
          n.tokenize = f;
          break;
        }
        i = a == "*", a = e.next();
      }
      return r("comment", "comment");
    }
    function V(e, n, i) {
      n.context = {
        prev: n.context,
        indent: e.indentation(),
        col: e.column(),
        type: i
      };
    }
    function C(e) {
      e.indent = e.context.indent, e.context = e.context.prev;
    }
    return {
      startState: function() {
        return { tokenize: f, context: null };
      },
      token: function(e, n) {
        if (e.sol() && n.context && n.context.align == null && (n.context.align = !1), n.tokenize == f && e.eatSpace())
          return null;
        var i = n.tokenize(e, n);
        if (i == "comment")
          return i;
        n.context && n.context.align == null && (n.context.align = !0);
        var a = e.current();
        return a == "(" ? V(e, n, ")") : a == "[" ? V(e, n, "]") : n.context && n.context.type == a && C(n), i;
      },
      indent: function(e, n) {
        var i = e.context;
        if (!i)
          return m.Pass;
        var a = n.charAt(0) == i.type;
        return i.align ? i.col + (a ? 0 : 1) : i.indent + (a ? 0 : t.indentUnit);
      },
      blockCommentStart: "/*",
      blockCommentEnd: "*/",
      lineComment: h.commentSlashSlash ? "//" : h.commentHash ? "#" : "--",
      closeBrackets: "()[]{}''\"\"``"
    };
  }), function() {
    let t = [];
    t.push({
      name: "ui()			获取当前字段对象",
      key: "ui",
      id: "ui()",
      parentfunction: "this"
    }), t.push({
      name: 'ui("字段名/组件id")	获取当前表对应字段对象',
      key: "ui",
      id: 'ui("fieldName/containerId")',
      parentfunction: "this"
    }), t.push({
      name: 'ui("字段名","表名")	获取对应表对应字段对象',
      key: "ui",
      id: 'ui("fieldName","tableName")',
      parentfunction: "this"
    }), t.push({
      name: "getObj()	获取配置对象",
      key: "getObj",
      id: "getObj()",
      parentfunction: "ui"
    }), t.push({
      name: "getVal()	获取值",
      key: "getVal",
      id: "getVal()",
      parentfunction: "ui,parent"
    }), t.push({
      name: "setVal()	设置值",
      key: "setVal",
      id: 'setVal("newVal","newDisplayVal")',
      parentfunction: "ui"
    }), t.push({
      name: "getStatus()	获取状态",
      id: "getStatus()",
      parentfunction: "ui"
    }), t.push({
      name: "setReadOnly()	设置只读",
      key: "setReadOnly",
      id: "setReadOnly(true/false)",
      parentfunction: "ui,row"
    }), t.push({
      name: "setHidden()	设置隐藏",
      key: "setHidden",
      id: "setHidden(true/false)",
      parentfunction: "ui,grid"
    }), t.push({
      name: "setRequired()	设置必填",
      key: "setRequired",
      id: "setRequired(true/false)",
      parentfunction: "ui"
    }), t.push({
      name: "refresh()	刷新数据",
      key: "refresh",
      id: "refresh()",
      parentfunction: "ui,grid"
    }), t.push({
      name: "refreshPage()		重新渲染整个页面（包括重新获取数据）",
      key: "refreshPage",
      id: "refreshPage()",
      parentfunction: "api"
    }), t.push({
      name: "reloadPage()		刷新页面",
      key: "reloadPage",
      id: "reloadPage()",
      parentfunction: "api"
    }), t.push({
      name: "locate()	定位到此位置",
      key: "locate",
      id: "locate()",
      parentfunction: "ui,grid"
    }), t.push({
      name: "checkModifyState()	数据是否有修改",
      key: "checkModifyState",
      id: "checkModifyState(isValidateGrid)",
      parentfunction: "api"
    }), t.push({
      name: "isExist()	是否存在",
      key: "isExist",
      id: "isExist()",
      parentfunction: "ui,grid"
    }), t.push({
      name: "isVisible()	是否显示",
      key: "isVisible",
      id: "isVisible()",
      parentfunction: "ui,grid"
    }), t.push({
      name: "gotoPage()	跳转到指定页码",
      key: "gotoPage",
      id: 'gotoPage("pageNo")',
      type: "dwevent,formevent",
      parentfunction: "grid"
    }), t.push({
      name: "getDataExtends()获取所有数据扩展",
      key: "getDataExtends",
      id: "getDataExtends()",
      parentfunction: "grid"
    }), t.push({
      name: "setCellStyle()	设置单元格样式",
      key: "setCellStyle",
      id: 'setCellStyle(rowPageIndx,"field","style")',
      type: "dwevent",
      parentfunction: "grid"
    }), t.push({
      name: "refreshGridData()刷新表格数据",
      key: "refreshGridData",
      id: "refreshGridData()",
      type: "dwevent",
      parentfunction: "grid"
    }), t.push({
      name: "refreshGridView()刷新表格",
      key: "refreshGridView",
      id: "refreshGridView()",
      type: "dwevent",
      parentfunction: "grid"
    }), t.push({
      name: "getCheckedData()获取选中数据",
      key: "getCheckedData",
      id: "getCheckedData(false)",
      type: "dwevent",
      parentfunction: "grid"
    }), t.push({
      name: "pageInfo()	获取分页信息",
      key: "pageInfo",
      id: "pageInfo()",
      type: "dwevent",
      parentfunction: "grid"
    }), t.push({
      name: "data			获取数据相关",
      key: "data",
      id: "data",
      type: "dwevent",
      parentfunction: "this"
    }), t.push({
      name: "addData()	添加数据",
      key: "addData",
      id: "addData()",
      type: "dwevent",
      parentfunction: "data"
    }), t.push({
      name: "removeData()	删除数据",
      key: "removeData",
      id: 'removeData("field",ids,bindIds,callback,errorCallBack)',
      type: "dwevent",
      parentfunction: "data"
    }), t.push({
      name: "refreshData()	刷新数据",
      key: "refreshData",
      id: "refreshData()",
      type: "dwevent",
      parentfunction: "data"
    }), t.push({
      name: "behavior		打开表单相关",
      key: "behavior",
      id: "behavior",
      type: "dwevent",
      parentfunction: "this"
    }), t.push({
      name: "openForm()		打开表单",
      key: "openForm",
      id: `openForm({
  rowData: any,
})`,
      type: "dwevent",
      parentfunction: "behavior"
    }), t.push({
      name: "openUrl()		打开指定URL",
      key: "openUrl",
      id: `openUrl({
  url: "",
})`,
      type: "dwevent",
      parentfunction: "behavior"
    }), t.push({
      name: "closeCurrentOpenPage()	关闭当前打开的窗口，无参数时默认全关",
      key: "closeCurrentOpenPage",
      id: "closeCurrentOpenPage(name,openType)",
      type: "dwevent",
      parentfunction: "behavior"
    }), t.push({
      name: "changeView()		切换到指定view",
      key: "changeView",
      id: 'changeView("dwViewId")',
      type: "dwevent",
      parentfunction: "behavior"
    }), t.push({
      name: "setRowStyle()	设置行样式",
      key: "setRowStyle",
      id: 'setRowStyle(rowPageIndx,"style")',
      type: "dwevent",
      parentfunction: "grid"
    }), t.push({
      name: "getInstance()	获取grid实例",
      key: "getInstance",
      id: "getInstance()",
      type: "dwevent,formevent",
      parentfunction: "grid"
    }), t.push({
      name: "getButtons()	获取工具条按钮配置（可设置隐藏）",
      key: "getButtons",
      id: "getButtons()",
      type: "dwevent,formevent",
      parentfunction: "grid"
    }), t.push({
      name: "getData()	获取所有数据",
      key: "getData",
      id: "getData()",
      type: "dwevent,formevent",
      parentfunction: "grid"
    }), t.push({
      name: "feedback		提供交互界面",
      key: "feedback",
      id: "feedback",
      type: "dwevent,formevent",
      parentfunction: "this"
    }), t.push({
      name: "msg()		消息提示",
      key: "msg",
      id: 'msg("msgContent","msgType")',
      type: "dwevent,formevent",
      parentfunction: "feedback"
    }), t.push({
      name: "ok()		成功提示",
      key: "ok",
      id: 'ok("msgContent")',
      type: "dwevent,formevent",
      parentfunction: "feedback"
    }), t.push({
      name: "info()		常规提示",
      key: "info",
      id: 'info("msgContent")',
      type: "dwevent,formevent",
      parentfunction: "feedback"
    }), t.push({
      name: "error()		错误提示",
      key: "error",
      id: 'error("msgContent")',
      type: "dwevent,formevent",
      parentfunction: "feedback"
    }), t.push({
      name: "warning()	警告提示",
      key: "warning",
      id: 'warning("msgContent")',
      type: "dwevent,formevent",
      parentfunction: "feedback"
    }), t.push({
      name: "dialog()	对话框交互",
      key: "dialog",
      id: `dialog({
  title: "对话框标题",
  extendParams: {width: "500px"},
  buttons: [{
    text: "关闭此按钮", click: () => {
      alert("点击此按钮就关闭");
      window.formApi.behavior.dialog.closeDialog()
    }, type: "danger"
  }]
})`,
      type: "dwevent,formevent",
      parentfunction: "feedback"
    }), t.push({
      name: "drawer()	侧边栏交互",
      key: "drawer",
      id: `drawer({
  extendParams:{size:"70%",position:"right",style:{height:"100%",minWidth:'80%'}},
  contextRender: ({h, resolve}) => {
    return [
      h("span","分配人员："),
      h(resolve("AwsuiButton"), {onClick: e => alert(231)}, ()=>"按钮示例")
    ]
  }
})`,
      type: "dwevent,formevent",
      parentfunction: "feedback"
    }), t.push({
      name: "msgBox()	确定框提示",
      key: "msgBox",
      id: `msgBox({
  title: "",//标题
  message: "" //内容
})`,
      type: "dwevent,formevent",
      parentfunction: "feedback"
    }), t.push({
      name: "validate()		校验表格",
      key: "validate",
      id: 'validate({"fieldName"})',
      parentfunction: "api"
    }), t.push({
      name: "validate()	校验表格",
      key: "validate2",
      id: "validate()",
      parentfunction: "ui"
    }), t.push({
      name: "saveData()		保存表格数据",
      key: "saveData",
      id: `saveData({isValidate:true,//是否校验表单数据
  isShowMsg:true,// 是否提示保存成功的信息
  isTransact:true,// 是否继续执行流程办理动作
  callback:function(){}// 成功后回调函数
})`,
      parentfunction: "api"
    }), t.push({
      name: "bannerMsg()	横幅提示",
      key: "bannerMsg",
      id: `bannerMsg([{
   bgColor:"",
   fontColor:"",
   msg:""
}])`,
      parentfunction: "feedback"
    }), t.push({
      name: "getVal()	获取值",
      key: "getVal",
      id: "getVal()",
      parentfunction: "ui,parent,row"
    }), t.push({
      name: "getVal()	获取此行指定列的值",
      key: "getVal",
      id: "getVal(fileName)",
      parentfunction: "row"
    }), t.push({
      name: "getValList()	获取此行数组格式数据",
      key: "getValList",
      id: "getValList()",
      type: "dwevent,formevent",
      parentfunction: "row"
    }), t.push({
      name: "setStyle()	设置整列样式或指定单元格样式",
      key: "setStyle",
      id: 'setStyle("color:#ffdddd;font-size:15px")',
      parentfunction: "cell,row"
    }), t.push({
      name: "getObjList()	获取此行对象格式数据",
      key: "getObjList",
      id: "getObjList()",
      type: "dwevent,formevent",
      parentfunction: "row"
    }), t.push({
      name: "setValue()	设置此行指定列的值",
      key: "setValue",
      id: 'setValue("value","fileName","displayValue")',
      type: "formevent",
      parentfunction: "row"
    }), t.push({
      name: "grid()			针对子表相关的API",
      key: "grid",
      id: 'grid("tableName")',
      type: "dwevent,formevent",
      parentfunction: "this"
    }), t.push({
      name: "cell()		获取指定单元格",
      key: "cell",
      id: 'cell("fieldName")',
      parentfunction: "grid"
    }), t.push({
      name: "parent()		获取父页面的或者父表的字段内容，仅限子表场景中使用",
      key: "parent",
      id: 'parent("fieldName/containerId")',
      parentfunction: "this"
    }), t.push({
      name: "setHeaderUnit()	配置默认周期",
      key: "setHeaderUnit",
      id: 'setHeaderUnit("unit")',
      type: "dwevent,formevent",
      parentfunction: "grid"
    }), t.push({
      name: "setBarStyle	设置甘特图进度条样式",
      key: "setBarStyle",
      id: 'setBarStyle("color:#ffdddd;background:blue")',
      type: "dwevent,formevent",
      parentfunction: "row"
    }), t.push({
      name: "row()		获取指定行",
      key: "row",
      id: 'row("数据id")',
      type: "dwevent,formevent",
      parentfunction: "grid"
    }), t.push({
      name: "getModel()	获取字段/BO表描述信息",
      key: "getModel",
      id: "getModel()",
      type: "formevent",
      parentfunction: "cell,grid"
    }), t.push({
      name: "awsuiaxios		数据请求",
      key: "awsuiaxios",
      id: "awsuiaxios",
      type: "dwevent,formevent",
      parentfunction: "api"
    }), t.push({
      name: "loadJS()		加载公共JS",
      key: "loadJS",
      id: "loadJS()",
      type: "dwevent",
      parentfunction: "api"
    }), t.push({
      name: "loadCSS()		加载公共css",
      key: "loadCSS",
      id: "loadCSS()",
      type: "dwevent",
      parentfunction: "api"
    }), t.push({
      name: "clsManager()		class样式管理类",
      key: "clsManager",
      id: "clsManager()",
      type: "dwevent",
      parentfunction: "api"
    }), t.push({
      name: "post()",
      key: "post",
      id: `post({
  url: "jd",
  data: {
    sid: this.api.getSid(),
    cmd: "%appId%_xxx",
    p1: "",
    p2: "",
  }
})`,
      type: "dwevent,formevent",
      parentfunction: "awsuiaxios"
    }), t.push({
      name: "get()",
      key: "get",
      id: `get({
  url: "jd",
  data: {
    sid: this.api.getSid(),
    cmd: "%appId%_xxx",
    p1: "",
    p2: "",
  }
})`,
      type: "dwevent,formevent",
      parentfunction: "awsuiaxios"
    }), t.push({
      name: "changeForm()		切换form表单（多表单时）",
      key: "changeForm",
      id: 'changeForm("formDefId")',
      parentfunction: "api"
    }), t.push({
      name: "process			提供流程相关的信息",
      key: "process",
      id: "process",
      parentfunction: "this"
    }), t.push({
      name: "validateMsg		设置字段检验信息",
      key: "validateMsg",
      id: 'validateMsg("fieldName","msg")',
      parentfunction: "this"
    }), t.push({
      name: "getHistoryOpinion()	获取审批记录",
      key: "getHistoryOpinion",
      id: "getHistoryOpinion()",
      parentfunction: "process"
    }), t.push({
      name: "task			提供任务相关的信息",
      key: "task",
      id: "task",
      parentfunction: "this"
    }), t.push({
      name: "getCommentDefInfo()	获取审核菜单定义",
      key: "getCommentDefInfo",
      id: "getCommentDefInfo()",
      parentfunction: "task"
    }), t.push({
      name: "getComment()		获取当前选中的审核菜单",
      key: "getComment",
      id: "getComment()",
      parentfunction: "task"
    }), t.push({
      name: "setComment()		选中某个审核菜单",
      key: "setComment",
      id: `setComment({
  actionName:"",
  msg:""
})`,
      parentfunction: "task"
    }), t.push({
      name: "activityDefInfo()	获取节点信息",
      id: "activityDefInfo()",
      key: "activityDefInfo",
      parentfunction: "task"
    }), t.push({
      name: "getInfo()		获取常规信息",
      id: "getInfo()",
      key: "getInfo",
      parentfunction: "task,process"
    }), t.push({
      name: "api			提供常用的工具方法",
      id: "api",
      parentfunction: "this",
      type: "dwevent,formevent",
      key: "api"
    }), t.push({
      name: "getDeviceInfo()		获取当前设备环境状态",
      id: "getDeviceInfo()",
      key: "getDeviceInfo",
      type: "dwevent,formevent",
      parentfunction: "api"
    }), t.push({
      name: "getSid()		获取sid信息，用于发送请求",
      id: "getSid()",
      key: "getSid",
      type: "dwevent,formevent",
      parentfunction: "api"
    }), t.push({
      name: "executeAtScript()	解析@公式",
      id: 'executeAtScript("")',
      key: "executeAtScript",
      type: "dwevent,formevent",
      parentfunction: "api"
    });
    let o = "", v = "", h = "", g = "", k = "eventContext formApi formController", w = "ui parent grid row", b = "api task process awsuiaxios feedback";
    function p(l) {
      for (var u = {}, d = l.split(" "), c = 0; c < d.length; ++c)
        u[d[c]] = !0;
      return u;
    }
    function x() {
      var l = {};
      for (let d = 0; d < t.length; d++) {
        var u = t[d];
        l[u.id] = u, o += u.key + " ";
      }
      return l;
    }
    m.defineMIME("formEvent", {
      name: "awsformevent",
      keywords: x(),
      atoms: p("false true null unknown"),
      bokeys: p(v),
      boitemkeys: p(h),
      componentkeys: p(g),
      functionkeys: p(o),
      highlightkeys: p(k),
      datafunkeys: p(w),
      propertieskeys: p(b)
    });
  }();
});
